/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 */
package org.apache.qpid.disttest.message;


public class Response extends Command
{
    protected String _registeredClientName;
    protected String _errorMessage;
    private CommandType _inReplyToCommandType;

    public Response(final String registeredClientName, final CommandType inReplyToCommandType, final String errorMessage)
    {
        super(CommandType.RESPONSE);
        _registeredClientName = registeredClientName;
        _errorMessage = errorMessage;
        _inReplyToCommandType = inReplyToCommandType;
    }

    public Response(String clientName, CommandType inReplyToCommandType)
    {
        this(clientName, inReplyToCommandType, null);
    }

    /**
     * Provided so that subclasses can call super(commandType)
     */
    protected Response(CommandType commandType)
    {
        super(commandType);
    }

    protected Response()
    {
        super(null);
    }

    public String getRegisteredClientName()
    {
        return _registeredClientName;
    }

    public void setRegisteredClientName(String registeredClientName)
    {
        _registeredClientName = registeredClientName;
    }

    @OutputAttribute(attribute=ParticipantAttribute.ERROR_MESSAGE)
    public String getErrorMessage()
    {
        return _errorMessage;
    }

    public void setErrorMessage(String errorMessage)
    {
        _errorMessage = errorMessage;
    }

    public boolean hasError()
    {
        return _errorMessage != null;
    }

    public CommandType getInReplyToCommandType()
    {
        return _inReplyToCommandType;
    }
}
